Database servers that execute on multi-core processors perform data manipulation operations on large amounts of tabular data. Tabular data is data that is logically organized as rows and one or more columns, each column having a certain size, each row including each column. Logically, tabular data resides in a table-like structure, such as a spreadsheet or relational table. However, the actual physical storage of the tabular data may take a variety of forms. For example, in row major format, tabular data may be stored as rows that are stored contiguously within a memory address space, each row including each column and a given column occupying the same number of bytes within a row. In column major format, each column may be separately stored from other columns as a column vector stored contiguously within a memory address space, the particular entry for each row in a column vector being stored in the same relative position or index of the respective column vector of each other column.
Various data manipulation operations manipulate a source column to generate a resultant column that has less rows than the source column. An example of such a data manipulation operation is a gather operation. A gather operation filters out rows based on filtering data specifying which rows to filter. A bit vector is an example of filtering data. An important function or operation performed in conjunction with a gather operation that generates a resultant column with less rows is to determine the number of rows in the resultant column. Discussed herein are approaches for determining the number of rows in the resultant column of a gather operation.